home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-02
/
bp7bugs1.zip
/
BP7BUGS1.LST
< prev
next >
Wrap
File List
|
1993-01-09
|
10KB
|
224 lines
BP7BUGS1.LST - Version 1 of BP 7.0 bug list
This is the first edition of my completely *un*official list of bugs in
BP 7.0. It's partly based on bugs in TP 6.0 that weren't fixed in the
new release. If you're interested in TP 6 bugs, look for TP6BUGS7.LST,
the final release of my TP 6 bug list.
There are more limitations to this list than there were to the previous
lists, because BP 7.0 is a lot bigger than TP 6.0. I'm unable to test
most Windows bugs, so they probably won't end up in this list. Most of
my work is in real mode, so there's a definite bias towards bugs there.
Finally, I don't do much in TurboVision, and bugs there are a real pain
to confirm, so they're not so likely to make it in. (However, there are
several TV bugs reported, and I've even included fixes for some.)
I'm sure there are errors in this list, and some things that I call bugs
are "design limitations" or "as designed". Don't rely on any of the
fixes; none of them are official (even if they look like they come from
Borland); only Borland can give you official fixes. If you want a
reliable list, write to Borland (in particular Zack Urlocker, at
Compuserve address 76217,1053 or Internet address
76217.1053@compuserve.com) and complain. Professional tools deserve
professional support; a secret bug list, or one maintained by an
amateur, is not professional support.
The list is very abbreviated; if any of the items are too obscure, ask
and I'll expand on them. One abbreviation I've been asked about:
"BASM" is the built-in assembler used in asm blocks.
The bugs reported here are gleaned from reports from dozens of people.
In particular, Morten Welinder has found several new bugs and supplied
fixes.
Bugs in the list are numbered in order from oldest to newest. However,
bugs 1 to 27 are taken from the last TP 6 list; those are more or less
in newest to oldest order, because I was too lazy to reverse the list.
If you're familiar with an older version of the list, check both the top
for late breaking TP 6 bugs and the bottom for new BP 7 bugs.
I'd appreciate it if anyone sent me their own bug reports and bug list;
I'll publicize it on Usenet, Fidonet and Compuserve. I'd also appreciate
hearing about patches. Please send demonstration code along with your
report; I don't like to put bug reports here unless I can reproduce
them. If you don't have access to any of the sources above, I don't
know how you came across this file; but I'll send you the latest version
on diskette if you send me $10 (US or Canadian). I'll also fill up the
diskette with various utilities and things I've written; let me know if
there's any particular type you're interested in.
Duncan Murdoch
dmurdoch@mast.queensu.ca (Internet address)
71631,122 (Compuserve)
DJ Murdoch at 1:249/99.5. (Fidonet)
337 Willingdon Ave.
Kingston, Ontario, Canada
K7L 4J3
------ Leftover bugs from TP 6 --------
1. The string formatting routines get the 19th digit wrong on very
large Comp numbers.
2. Actual heap allocation can be 511 bytes more than the maximum
specified in the $M directive.
3. A window that has neither the wfGrow now wfMove flags set does not
disable the cmResize command when it is active. (A fix is available:
see TWindow.fix in BP7BUGSn.ZIP).
4. The compiler doesn't detect overlapping case constants. Only the
first matching case is executed.
5. Single and Double types typed constants are not correctly
initialized for absolute values smaller than 1.17xxxxE-38 respectively
2.22xxxxE-308 (their value wil be zero instead). The lower limit of the
dynamic range should be 1.5E-45 and 5.0E-324 respectively.
6. BASM has the ranges of legal values incorrect for IN, OUT, INT, ENTER,
AAM, AAD instructions.
7. BASM allows references to nonexistent registers on the coprocessor,
e.g. FADD ST, ST(123456).
8. The IDE doesn't properly single step across AAM xx and AAD xx
instructions.
9. The coprocessor emulator doesn't handle special arguments like INF
and NaN properly. Quiet NaNs are treated as signalling NaNs, and
operations on INF return NaN.
10. TRect.Union and TRect.Intersect don't perform set operations. If
two rectangles don't intersect, TRect.Intersect always returns
((0,0),(0,0)); the union of that empty rectangle with any other
rectangle always includes the point (0,0).
11. The Str procedure rounds nnn.5 differently than either the Round or
Trunc functions when printing reals with no decimal places. In $N-
mode, it is inconsistent; in $N+ mode, it consistently rounds up.
12. The base type for a pointer type definition can't be a qualified
identifier.
13. Compile time evaluation of the ROUND() function is different than
run-time evaluation in $N+ mode on numbers ending in .5.
14. The coprocessor emulator doesn't properly emulate the FINCSTP and
FDECSTP instructions in BASM. (These aren't used by compiled Pascal
code.)
15. The coprocessor emulator doesn't respect the precision control bits.
16. The SEG operator in BASM doesn't work on variables declared in the
stack segment.
17. Referencing fields of records in BASM in a WITH block doesn't add the
base address.
18. The instruction "IMUL AX, 16" (valid on an 80186+) is rejected by BASM.
The equivalent "IMUL AX, AX, 16" does work (in $G+ mode).
19. The coprocessor emulator does not respect the rounding bits internally
or when storing results to Single or Double variables.
20. The compiler won't allow the optional identifier in a variant record to
be an already defined scalar type identifer.
21. IN doesn't properly handle out of range values. (What it does is to
demote out of range scalars to byte, ignoring any high bits.)
22. Writeln wipes out the status word in the coprocessor.
23. You can allocate an array bigger than 65528 bytes on the heap; it may
wrap around and trash whatever precedes it.
24. The coprocessor emulator doesn't propagate NaNs the same way as a real
coprocessor does.
25. Complicated expressions involving Reals compiled $N+ will unnecessarily
overflow the coprocessor stack.
26. There are certain illegal Extended encodings that crash the debugger
in TURBO and BP.
27. Range checking shouldn't apply to the limits in a for loop.
------- New bugs in BP 7 --------
28. Coprocessor errors are reported with the address normalized, but the
IDE can't find source lines with errors specified that way. Use the
command line compilers with /F ssss:oooo to find them.
29. On a 386, a longint shift of 16 bits or more is unreliable. (A fix
is available in NEWSHR.FIX.)
30. On a 386, interrupt routines must explicitly save the extended
registers EAX through to EDX or risk corrupting longint calculations and
other programs.
31. On a 386, longint calculations are unreliable in environments which
don't preserve the extended registers. So far, the only such
environments that I've heard of are systems running Novell's
non-dedicated file server (I don't know which version). (A detector and
protection scheme is available in TRASHSRC.ZIP. A quick fix is just to
set Test8086=0 at the start of your program.)
32. The DisposeNode procedure in the Outline unit neglects to dispose of
the Text string. (A fix is available in OUTLINE.FIX.)
33. Overflow checking $Q+ sometimes misses overflows in operations on
bytes.
34. The file dialog in STDDLG.PAS messes up directory changes. (A fix
is available in FILEDIAL.FIX.)
35. Spurious compiler arithmetic overflow errors are generated in
constant expressions containing products of negative numbers with zero.
36. If a running program changes a file that's currently loaded in the
IDE, when you exit you'll lose the IDE version no matter how you answer
the dialog about which version to keep.
37. The expression "Word(hi(wordvar))" doesn't zero-extend the high byte
of wordvar to give a word, it gives the word from memory starting at the
location of the high byte of wordvar, i.e. the high byte plus the low
byte of the next variable.
38. With the extended syntax $X+, asciiz character arrays that are
fields in records passed as const parameters aren't handled properly by
Writeln. (This bug report clearly needs some work! Can anyone tell me
exactly what triggers this one?)
39. Coprocessor exceptions aren't handled properly in protected mode. BP and
TDX are likely to be aborted by the error.
40. In TURBO.EXE (but not BP.EXE), ^KR gives a junk error message about the
file being a device if it doesn't exist (after the correct message).
41. The ATT400.BGI driver is apparently messed up. According to reports (I
haven't tested this one) the TP 6 driver works fine.
42. When written vertically, the bitmap fonts are aligned differently from the
stroked fonts. The bitmaps are aligned with the bottom of the letters, the
stroked fonts with the tops. Horizontally, both are aligned with the tops.
43. Typed constants that are local to assembler routines can't be watched in
the IDEs or TD without explicitly giving the routine name as a prefix, e.g.
MyAsmRoutine.MyConst.
44. In protected mode, if you have any BGI drivers registered with
RegisterBGIDriver then you must register them again if you call CloseGraph and
want to call InitGraph again.
45. Some versions of OS/2 come with a buggy mouse driver that won't allow
programs run from the IDE under OS/2 to use the mouse. A fix is supposed to
be available from IBM.
46. Longint constants given in decimal in BASM statements like "DD 666777"
are truncated to 16 bits. (Express it in hex, and things are fine!)
47. Contrary to the online help, Release() does not work in protected mode.
(This is documented in the Language Guide.)